/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package xmlManager;

import java.io.File;
import java.util.Vector;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import shared.Voto;

/**
 *
 * @author MASTER
 */
public class xmlHandler {
    
    private static Vector<String> aVotar = new Vector<String>();
    
    //Levanta del xml lo que se va a votar
    public static void cargarPuestos(){
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder;
        try {
            String puesto;
            builder = factory.newDocumentBuilder();
            Document doc  = builder.parse(new File("candidatos.xml"));
            NodeList listCands = doc.getElementsByTagName("candidato");
            for(int i = 0; i < listCands.getLength(); i ++) {
                Node candNode = listCands.item(i);
                Element elemento = (Element) candNode;
                puesto = getTagValue("puesto", elemento);
                if(!aVotar.contains(puesto)){
                    aVotar.add(puesto);
                }
            }      
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }
    
    //Utilizado para el XML
    private static String getTagValue(String tag, Element elemento) {
        NodeList lista = elemento.getElementsByTagName(tag).item(0).getChildNodes();
        Node valor = (Node) lista.item(0);
        return valor.getNodeValue();
    }
    
    public static Voto getVoto(){
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder;
        try {
            String puesto, valor;
            Voto nuevo = new Voto(aVotar);
            String nombre = "voto.xml";
            builder = factory.newDocumentBuilder();
            Document doc  = builder.parse(new File(nombre));
            NodeList listCands = doc.getElementsByTagName("eleccion");
            for(int i = 0; i < listCands.getLength(); i ++) {
                Node candNode = listCands.item(i);
                Element elemento = (Element) candNode;
                puesto = getTagValue("puesto", elemento);
                valor = getTagValue("nombre",elemento);
                nuevo.put(puesto,valor);
            }
            return nuevo;
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return new Voto(aVotar);
    }
    
    public static Vector<String> getAvotar(){
        return aVotar;
    }
}
